<?php

namespace app\common\model\User;

use think\Model;
use app\common\model\Region;

/**
 * 用户收货地址模型
 */
class Address extends Model
{
    //模型对应的是哪张表
    protected $table = "pre_user_address";

    //指定一个自动设置的时间字段
    //开启自动写入
    protected $autoWriteTimestamp = false; 

    //设置字段的名字
    protected $createTime = false; //插入的时候设置的字段名

    //禁止 写入的时间字段
    protected $updateTime = false;

    protected $append = [
        'region_text',
        'address_text'
    ];

    //地区获取器
    public function getRegionTextAttr($value, $data)
    {
        $province = Region::where(['code' => $data['province']])->find();
        $city = Region::where(['code' => $data['city']])->find();
        $district = Region::where(['code' => $data['district']])->find();

        $output = [];
        if($province)
        {
            $output[] = $province['name'];
        }

        if($city)
        {
            $output[] = $city['name'];
        }

        if($district)
        {
            $output[] = $district['name'];
        }

        return implode('-', $output);
    }

    public function getAddressTextAttr($value, $data)
    {
        $province = Region::where(['code' => $data['province']])->find();
        $city = Region::where(['code' => $data['city']])->find();
        $district = Region::where(['code' => $data['district']])->find();

        $output = [];
        if($province)
        {
            $output[] = $province['name'];
        }

        if($city)
        {
            $output[] = $city['name'];
        }

        if($district)
        {
            $output[] = $district['name'];
        }

        return implode('', $output) . ' ' . $data['address'];
    }

    //给模型定义一个关联查询
    public function provinces()
    {
        /**
         * belongsTo('关联模型', '当前模型外键', '关联模型主键');
         *
         * 第一个参数
         * app\model\Category 关联的模型类名(分类表模型)
         *
         * 第二个参数
         * category_id 外键字段,默认的外键名规则是关联模型名+_id(文章表外键字段)
         *
         * 第三个参数
         * id 关联模型主键,默认是关联模型的 $pk 值(分类表主键字段)
         */

        return $this->belongsTo(\app\common\model\Region::class, 'province', 'code');
    }

    //查询城市
    public function citys()
    {
        return $this->belongsTo(\app\common\model\Region::class, 'city', 'code');
    }

    //查询地区
    public function districts()
    {
        return $this->belongsTo(\app\common\model\Region::class, 'district', 'code');
    }
}
